package cn.bearspark.user.provider.dao.mapper;

import cn.bearspark.user.provider.dao.po.UserAtPO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Set;

/**
 * 其它模块中 @ 用户的数据映射接口
 *
 * @author f
 */
@Mapper
public interface UserAtMapper {

    /**
     * 批量添加其它模块中的 @ 的用户名
     *
     * @param moduleCode   模块的枚举值
     * @param moduleDataId 该数据的主键 id
     * @param atUserIdList @ 的用户 id 集合
     */
    void insertBatchUserAt(int moduleCode, long moduleDataId, List<Long> atUserIdList);

    /**
     * 批量获取数据中 @ 用户名集合
     *
     * @param moduleCode      模块的枚举值
     * @param moduleDataIdSet 数据的主键 id 集合
     * @return 数据中 @ 用户名集合
     */
    List<UserAtPO> list(int moduleCode, Set<Long> moduleDataIdSet);

    /**
     * 删除指定模块下指定数据 @ 的所有用户信息
     *
     * @param moduleCode   模块的枚举值
     * @param moduleDataId 数据的主键 id
     */
    @Delete("DELETE FROM t_at_user WHERE module_code = #{moduleCode} AND module_data_id = #{moduleDataId}")
    void delete(int moduleCode, long moduleDataId);
}
